package com.ztesoft.book.core.sys.sysuser.mapper;

import com.ztesoft.book.core.base.base.mapper.BaseExMapper;
import com.ztesoft.book.core.sys.sysmenu.dto.SysMenuDTO;
import com.ztesoft.book.core.sys.sysmenu.qo.LoginMenuTreeNewQO;
import com.ztesoft.book.core.sys.sysuser.dto.SysUserDTO;
import com.ztesoft.book.core.sys.sysuser.qo.SysUserQO;
import com.ztesoft.book.core.sys.sysuser.vo.SysUserSafeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 系统用户
 * @Author YangFan
 * @Date 2021-06-22 17:31
 */
@Mapper
public interface SysUserMapper extends BaseExMapper<SysUserDTO, SysUserQO> {


    /**
     * 方法功能描述:
     * < 根据当前用户获取菜单 >
     *
     * @param userid 【参数 1 注释说明】
     * @return List list
     * @author YangFan
     * @date 2021-07-01 18:13
     */
    List<SysMenuDTO> findMenuByUser(String userid);


    /**
     * 方法功能描述:
     * < 无密码列表 >
     *
     * @param qo 参数说明
     * @return List<SysUserSafeVO>
     * @author YangFan
     * @date 2021-08-06 17:59
     */
    List<SysUserSafeVO> findListSafe(SysUserQO qo);


    /**
     * 方法功能描述:
     * < 获取用户的所有0级菜单 - 导航 >
     *
     * @param userid 【参数 1 注释说明】
     * @return List list
     * @author YangFan
     * @date 2021-07-02 15:00
     */
    List<SysMenuDTO> findMenuTypeZeroByUser(String userid);


    /**
     * 方法功能描述:
     * < 获取用户所有的1级菜单 - 菜单 >
     *
     * @param userid 【参数 1 注释说明】
     * @return List list
     * @author YangFan
     * @date 2021-07-02 15:01
     */
    List<SysMenuDTO> findMenuTypeOneByUser(String userid);

    /**
     * 查询所有人的id及其最近一次登录时间信息
     *
     * @return List
     */
    List<SysUserDTO> queryUserIdAndLoginTime();

    /**
     * 批量跟新用户状态为停用
     *
     * @param userids 用户ids
     */
    void batchUpdateUserDeleteByIds(@Param("userids") List<String> userids);

    /**
     * 方法功能描述:
     * < 获取用户所有的非按钮的菜单 >
     *
     * @param userid 参数说明
     * @return List<LoginMenuTreeNewQO>
     * @author YangFan
     * @date 2021-09-01 15:21
     */
    List<LoginMenuTreeNewQO> findMenuByUserWithOutButton(String userid);
}
